package com.qnnu.studenttravelsystem.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @ClassName JwtUtil
 * @Description TODO
 * @Author zhongge
 * @Version 1.0
 */
@Component
public class JwtUtil_ {
    //秘钥
    private static final String SECRET="mySecretKey123xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    //有效时间
    private static final long EXPIRATION = 3600000; // 1小时
    //生成token
    public String generateToken(String subject) {
        return Jwts.builder()
                .setSubject(subject)//哪一个人需要租房子
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION))//需要租的时间是多久
                .signWith(SignatureAlgorithm.HS256, SECRET)//为房子加一把锁
                .compact();//转为字符串
    }
    //验证是否是房间的主人
    public boolean validateToken(String token) {
        try {
            Jwts.parser()//获取解析器
                    .setSigningKey(SECRET)//拿到钥匙
                    .parseClaimsJws(token);//扫一下房间里面有什么值钱之物
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    //获取房间中的物品
    public String getSubjectFromToken(String token) {
        Claims claims = Jwts.parser()//获取解析器
                .setSigningKey(SECRET)//拿到钥匙
                .parseClaimsJws(token)//看一下房间中有什么东西
                .getBody();//获取房间中的body  取出的是Payload 部分 称为claims
         return claims.getSubject();
    }
}
